package com.divemotor.ventarepuestosinternet.servlet;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;

import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

public class ImagenServlet extends HttpServlet {
	
	private Logger logger = Logger.getLogger(ImagenServlet.class);
	
	private Properties propiedades;
	
	private String rutaImagenes;
	private String rutaPromociones;

	private static final long serialVersionUID = 1L;
	
	@Override
	public void init(ServletConfig config) {
		logger.info("ImagenServlet init");
		try {
			
			this.propiedades = new Properties();
			this.propiedades.load(ImagenServlet.class.getResourceAsStream("/directorios.properties"));
			this.rutaImagenes = this.propiedades.getProperty("rutaImagenes");
			this.rutaPromociones = this.propiedades.getProperty("rutaPromociones");
			
		} catch (Exception e) {
			logger.error("EX* init");
		}
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) {
		processRequest(request, response);
	}
	
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) {
		processRequest(request, response);
	}
	
	protected void processRequest(HttpServletRequest request, HttpServletResponse response) {
		
		// obteniendo el archivo de la imagen.
		String nombreArchivo = request.getParameter("nombreArchivo");
		String tipo = request.getParameter("tipo");
		
		try {
			String ruta="";
			if (tipo.equals("imagen")) {
				ruta = rutaImagenes;
			} else if (tipo.equals("promocion")) {
				ruta = rutaPromociones;
			}
			
			logger.info("nombre  archivo " + nombreArchivo);
			BufferedInputStream in = new BufferedInputStream(new FileInputStream(new File(ruta, nombreArchivo)));
			
			// obteniendo el contenido de la imagen.
			byte[] bytes = new byte[in.available()];
			
			in.read(bytes);
			in.close();
			
			// escribiendo el contenido de la imagen  a la respuesta.
			response.getOutputStream().write(bytes);
			   
		} catch (Exception e) {
			logger.error("EX* processRequest");
		}
	}
}